--------------------------------------------------------------------------------
--      Copyright (c) 2015 - 2016 , 蒙占志(topameng) topameng@gmail.com
--      All rights reserved.
--      Use, modification and distribution are subject to the "MIT License"
--------------------------------------------------------------------------------
-- added by wsh @ 2017-12-28
-- 注意：
-- 1、已经被修改，别从tolua轻易替换来做升级

local zero             = Vector2.zero
local rawget           = rawget
local setmetatable     = setmetatable

TouchPhase             = {
    Began      = 0,
    Moved      = 1,
    Stationary = 2,
    Ended      = 3,
    Canceled   = 4,
}

TouchBits              = {
    DeltaPosition = 1,
    Position      = 2,
    RawPosition   = 4,
    ALL           = 7,
}

local TouchPhase       = TouchPhase
local TouchBits        = TouchBits
local Touch            = {}
local unity_touch      = CS.UnityEngine.Touch
local unity_touchphase = CS.UnityEngine.TouchPhase

Touch.__index          = function(t, k)
    local var = rawget(Touch, k)
    if var ~= nil then
        return var
    end

    return rawget(unity_touch, k)
end

--c# 创建
function Touch.New(fingerId, position, rawPosition, deltaPosition, deltaTime, tapCount, phase)
    return setmetatable({ fingerId = fingerId or 0, position = position or zero, rawPosition = rawPosition or zero, deltaPosition = deltaPosition or zero, deltaTime = deltaTime or 0, tapCount = tapCount or 0, phase = phase or 0 }, Touch)
end

function Touch:Init(fingerId, position, rawPosition, deltaPosition, deltaTime, tapCount, phase)
    self.fingerId      = fingerId
    self.position      = position
    self.rawPosition   = rawPosition
    self.deltaPosition = deltaPosition
    self.deltaTime     = deltaTime
    self.tapCount      = tapCount
    self.phase         = phase
end

function Touch:Destroy()
    self.position      = nil
    self.rawPosition   = nil
    self.deltaPosition = nil
end

function Touch.GetMask(...)
    local arg   = { ... }
    local value = 0

    for i = 1, #arg do
        local n = TouchBits[arg[i]] or 0

        if n ~= 0 then
            value = value + n
        end
    end

    if value == 0 then
        value = TouchBits["all"]
    end

    return value
end

TouchPhase.unity_touchphase = CS.UnityEngine.TouchPhase
Touch.unity_touch           = CS.UnityEngine.Touch
CS.UnityEngine.TouchPhase   = TouchPhase
CS.UnityEngine.Touch        = Touch
setmetatable(Touch, Touch)
return Touch


